package io.github.talelin.latticy.service;

import io.github.talelin.latticy.dto.warearea.UpdateWareareaDTO;
import io.github.talelin.latticy.dto.warearea.WareareaDTO;
import io.github.talelin.latticy.model.WareareaDO;
import com.baomidou.mybatisplus.extension.service.IService;
import io.github.talelin.latticy.vo.WareareaVO;

import java.util.List;

/**
 * <p>
 * 分区分区 服务类
 * </p>
 *
 * @author generator@wulongbo
 * @since 2022-06-07
 */
public interface WareareaService extends IService<WareareaDO> {

    /**
     * 新建分区
     *
     * @param dto 新建分区校验器
     * @return 被创建的分区
     */
    WareareaDO createWareArea(WareareaDTO dto);

    /**
     * 更新分区
     *
     * @param id  分区id
     * @param dto 分区信息
     * @return 是否成功
     */
    boolean updateWareArea(int id, UpdateWareareaDTO dto);

    /**
     * 删除分区
     *
     * @param id 分区id
     * @return 是否成功
     */
    boolean deleteWareArea(int id);

    /**
     * 查询分区
     *
     * @param id 分区id
     * @return 查询的分区
     */
    WareareaDO getWareAreaById(int id);


    /**
     * 查询所有分区
     *
     * @param code 库位编码
     * @return
     */
    List<WareareaVO> getWareAreaList(String code);

    /**
     * 根据区域id获取仓库id
     *
     * @param areaId 区域id
     */
    String getCodeByAreaId(int areaId);

    /**
     * 校验分区id是否存在
     *
     * @param id 库位id
     * @return true代表存在
     */
    boolean checkWareAreaExistById(int id);

    /**
     * 校验分区唯一排序
     *
     * @param id        库位id
     * @param areaOrder 排序
     * @return true代表存在
     */
    boolean checkWareAreaOrderExistById(int id, int areaOrder);

    /**
     * 校验分区唯一排序
     *
     * @param code      仓库编码
     * @param areaOrder 排序
     * @return true代表存在
     */
    boolean checkWareAreaOrderExistByCode(String code, int areaOrder);

    /**
     * 校验分区唯一分区
     *
     * @param code 仓库编码
     * @param name 分区名
     * @return true代表存在
     */
    boolean checkWareAreaExistByName(String code, String name);

}
